from pyecharts.charts import Map, Page, Line
import pyecharts.options as opts
import openpyxl

def chinaTotalMap():
    workbook = openpyxl.load_workbook('COVID-19-China.xlsx')#读取本地的xlsx文件
    worksheet_Time = workbook['中国疫情数据更新时间']#获取文件中中国疫情数据更新时间表
    worksheet_Data = workbook['中国省份累计确诊病例示意图']#获取文件中中国省份疫情数据表
    worksheet_Data.delete_rows(1)#删除第一行
    province = []#省份
    curconfirm = []#累计确诊
    for data in worksheet_Data.values:
        province.append(data[0])
        curconfirm.append(data[2])
    timeChina = worksheet_Time['A2'].value#获取更新时间

    #设置数据范围颜色
    pieces = [
        {'max': 0, 'min': 0, 'label': '0', 'color': '#FFFFFF'},
        {'max': 9, 'min': 1, 'label': '1-9', 'color': '#FFE5DB'},
        {'max': 99, 'min': 10, 'label': '10-99', 'color': '#FF9985'},
        {'max': 999, 'min': 100, 'label': '100-999', 'color': '#F57567'},
        {'max': 9999, 'min': 1000, 'label': '1000-9999', 'color': '#E64546'},
        {'max': 99999, 'min': 10000, 'label': '≧10000', 'color': '#B80909'}
    ]

    #绘制中国省份疫情地图
    map = (
        Map()
        .add(series_name = '累计确诊人数', data_pair = [list(i) for i in zip(province, curconfirm)], maptype = "china")
        .set_global_opts(
            title_opts = opts.TitleOpts(
                title = "中国累计确诊疫情数据",
                subtitle = '数据更新至:' + timeChina + '\n\n来源：百度疫情实时大数据报告'
            ),
            visualmap_opts = opts.VisualMapOpts(
                max_ = 300,
                is_piecewise = True,
                pieces = pieces
            )
        )
    )
    return map

def allMap():
    page = Page(layout = Page.SimplePageLayout)
    page.add(
        chinaTotalMap()
    )
    #page.render('./中国累计确诊信息.html')
    print('国内疫情可视化图表绘制完毕！')

if __name__ == '__main__':
    allMap()